Collaboration and interaction with system terminals

ABSTRACT

A technique is provided for session aggregation in a distributed architecture having a server connected to blades. A master session is generated for collaboration by user clients, and the master session corresponds to one or more terminal sessions on the distributed architecture of the server connected to the blades. The one or more terminal sessions on the distributed architecture are aggregated in the master session. A determination is made that the user clients agree for one user client of the user clients to be authorized as a current command line user name, in response to requests that are sent to the user clients. The one user client is granted authorization to the current command line user name in the master session based on an agreement by the user clients.

BACKGROUND

The present invention relates to communications, and more specifically,to the collaboration and interaction of computer systems with remotecomputers.

Users typically connect to mainframe computers (e.g., System z®) using a3270 terminal emulator such as IBM® Personal Communications (PCOMM).PCOMM is a host communication and terminal emulation package thatfeatures 3270, 5250, virtualization (VT) emulation, etc.

Terminal emulators typically connect to the mainframe using transmissioncontrol protocol/Internet Protocol (TCP/IP). A session is identified byIP addresses, which specify the computers that participate in it, andport numbers, which identify the programs on those computers. The telnetport may be utilized on the mainframe to listen for terminal emulators.

SUMMARY

According to exemplary embodiments, a computer program product, system,and method include a tangible storage medium readable by a processingcircuit and instructions stored for execution by the processing circuitfor performing the method. The method is for session aggregation in adistributed architecture having a server operatively connected tomultiple blades. A master session for collaboration by user clients isgenerated. The master session corresponds to one or more terminalsessions on the distributed architecture of the server operativelyconnected to the blades. The one or more terminal sessions on thedistributed architecture are aggregated in the master session. Adetermination is made that the user clients agree for one user client ofthe user clients to be authorized as a current command line user name,in response to requests that are sent to the user clients. The one userclient is granted authorization to the current command line user name inthe master session based on an agreement by the user clients.

Additional features and advantages are realized through the techniquesof the present invention. Other embodiments and aspects of the inventionare described in detail herein and are considered a part of the claimedinvention. For a better understanding of the invention with theadvantages and the features, refer to the description and to thedrawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The forgoing and other features, and advantages ofthe invention are apparent from the following detailed description takenin conjunction with the accompanying drawings in which:

FIG. 1 illustrates a block diagram of an architecture according to anembodiment of the present invention;

FIG. 2 illustrates a flow chart for monitoring, controlling, and/orinteracting with workloads on a server and/or blades according to anembodiment of the present invention;

FIGS. 3A and 3B illustrate a flow chart of terminal sessioncollaboration for aggregated sessions according to an embodiment of thepresent invention;

FIG. 4 illustrates a flow chart for session transfer of aggregatedterminal sessions according to an embodiment of the present invention;

FIG. 5 illustrates further details of an aggregation layer according toan embodiment of the present invention;

FIG. 6 illustrates a method for session collaboration in a distributedcomputer architecture according to an embodiment of the presentinvention;

FIG. 7 illustrates an example of a computer having capabilities, whichmay be utilized in accordance with exemplary embodiments of the presentinvention;

FIG. 8 illustrates an example of a computer program product on acomputer readable/usable medium with computer program code logicembodied in tangible media as an article of manufacture.

DETAILED DESCRIPTION

Exemplary embodiments are configured allow one or more user clients tooperatively connect to terminal sessions running on a server operativelyconnected to blades (i.e., blade servers) in a distributed computerarchitecture. The server may have various workloads and can assignprocesses (for the workloads) to different connected blades, and anaggregation layer (i.e., middle layer software) allows the user clientsto interact with workloads on the server via a terminal session. Also,the aggregation layer allows the user clients to see beyond the serverand interact with processes on the blades via terminal sessions. Theterminal sessions may include functionality for session persistence,session collaboration, session aggregation, session breakout, andsession scale.

Turning now to FIG. 1, a block diagram 100 of an architecture isgenerally shown according to an embodiment. The block diagram 100includes a hybrid system 135, which shows a distributed computerarchitecture of a server 105 operatively connected to blades 110. Theserver 105 may be a mainframe (computer system) and operativelyconnected, e.g., via a network, cables, and/or link 101 to a pluralityof blades 110. The server 105 may be a System z® computer system. Eachblade 110, also referred to as a blade server, may be a server computerwith a modular design optimized to minimize the use of physical spaceand energy. The blades 110 may be in a BladeCenter® location, and theremay be blades 1-N available for processing, where N represents the lastblade.

The server 105 is configured to offload (designate/assign) processes (ofone or more workloads) to the individual blades 110 (e.g., blades 1-N)utilizing the distributed computer architecture.

There may be various user clients 10 a-10 n (generally referred to asuser client 10) each on respective computer systems 120 a-n (generallyreferred to as computer system 120). The user client 10, which can be asoftware program running on the computer system 120, is configured toopen a terminal session on the server 105 through an aggregation layer15. The operator of the user client 10 may log into the server 105 toopen the terminal session(s), and the aggregation layer 15 interceptsthe login request and opens the terminal session(s) with user client 10and the server 105 and/or blades 1-N of blades 110. The aggregationlayer 15 (which is a middle layer) may be one or more software programsstored and running on a computer system 125, such as a server, and/ormay optionally be stored and running on the server 105. The aggregationlayer on the server 105 is shown in a dashed box as aggregation layer 15a. Any reference to the function, features, and logic of aggregationlayer 15 on the computer system 125 applies to the aggregation layer 15a running on the server 105. The computer system 120 (of user clients10) may be operatively connected to the computer system 125 via anetwork, cables, and/or links 121. The computer system 125 may beoperatively connected to the server 105 via a network, cables, and/orlink 126.

By the aggregation layer 15, the operator may run the user client 10 toopen/instantiate terminal sessions on the server 105 and/or blades 110in which the operator can input commands, view workloads, and viewprocesses running on the server 105 and/or individual blades 110.Additionally, in an open architecture, the hybrid system 135 may includeand utilize a switch 115 (optionally shown with dashed lines) andlisteners 130, 131, and 132. In the closed architecture, the server 105is operatively connected to its blades 110 by the link 101 (e.g., thehybrid system 135 may not include the switch 115 and/or the aggregationlayer 15 may not utilize the switch 115). In one implementation of theopen architecture, the link 101 may be removed (or not utilized), andthe server 105 is operatively connected to the blades 110 by the switch115 via links 103 and 104. Also, the aggregation layer 15 (on thecomputer system 125) may be connected to the switch 115 by a network,cables, and/or link 102. In the open architecture, all communicationtraffic between the server 105 and the blades 110 flows through theswitch 115.

A workload is a collection of address spaces on the server 105 (e.g.,System z® server) and processes running on the blades 110. The workloadmay be the responsibility of the server 105, and the server 105 canassign/distribute the processes of the workload to various connectedblades 110. A terminal session is opened by the aggregation layer 15(and/or the server 105) after receiving a request from the user client10. The operator can make the request to open one or more terminalsessions on the server 105 and blades 110 in a displayable operatorpanel (graphical user interface) of the user client 10. The operatorviews, monitors, and inputs commands in a user session (in the operatorpanel) of user client 10 that corresponds to the terminal session on theserver 105 and/or the terminal session of the blades 110. A terminalsession is the interaction between a dedicated terminal and a server orthe interaction between a terminal application in a desktop machine anda server. Conventionally, a terminal session does not allow (direct)interaction with blades 110 which are connected to and run in thebackground of the server 105. However, the aggregation layer 15 isconfigured to allow multiple user clients 10 (e.g., user clients 10 a-10n) on various computer systems 120 (e.g., computer system 120 a-120 n)to (directly) interact with each respective blade 1-N as well as theserver 105, via the switch 115. The aggregation layer 15 is configuredto allow commands (of workloads) to be traced to each target blade 1-N,for monitoring by the user client 10.

For ease of explanation, user session, terminal window, operator panel,and/or session window on the user client 10 may be utilized to indicatethe operable connection into the terminal session on server 105 and/orblades 110, for monitoring and commands by the operator. One skilled inthe art understands that a terminal session can refer to the operableconnection of the user client 10 (i.e., user session) to the server105/blades 110. When the operator opens a session (user session,terminal window, etc.,), it is understood that a terminal session isopened on the server 105 and/or blades 110. In a remote controloperation, the terminal window on the user client 10 displays the screenof the remote machine (i.e., the server 105 and/or the blades) that itis controlling during the terminal session. For remote execution of aprogram and/or commands, the terminal window/user sessions in agraphical interface is used to display a command line to the operator ofthe user client 10. The terminal window can be utilized by the operatorto perform a myriad of operations as understood by one skilled in theart.

The aggregation layer 15 and/or server 105 connects terminal sessions tothe user session opened in the user client 10. For example, theaggregation layer 15 provides visibility into the System z® addressspace of the server 105 using, e.g., USS (Unix System Services)interfaces and/or MVS™ (Multiple Virtual Storage) interfaces. Theoperator may interact with the workloads on the server 105 using theterminal session of the user client 10. When the aggregation layer 15interfaces with the (System z®) server 105 and blades 110 via the switch115, any listener 130, 131, and/or 132 can parse communication trafficon the links 103 and 104 and relay/transfer the communication trafficdata to the aggregation layer 15 via the link 102 and/or the link 126.Also, as noted above, the aggregation layer 15 may optionally be on theserver 105 as aggregation layer 15 a. The listener 130, 131, and/or 132may attach to processes (running on the blades 110) and/or attach toaddress spaces (on the server 105) to allow control and collection ofinformation for the user session on the user client 10. In oneimplementation, the listener 130, 131, and/or 132 may be a librarycompiled into the (memory) address space (on the server 105) and/or anadditional software application (e.g., listening process running on theblades 110, the server 105, and/or the switch 115) capable of supplyingsignals for processes requiring monitoring and interaction. The listener130 on the switch 115 is capable of deconstructing packets (in thecommunication traffic between server 105 and respective blades 110) todetermine interaction command information between an address space onthe server 105 and each respective corresponding process running onindividual blades 1-N of blades 110. The operator of the user/terminalsession(s) on user client 10 (e.g., user client 10 a) can makeannotations which may be communicated to other operators. One operatorcan have numerous terminal sessions (e.g., terminal session 1-1000)opened on the user client 10 which correspond to the respective terminalsessions on the server 105 and blades 110. The aggregation layer 15 maymap the 1-1000 terminal sessions on the servers 105 and/or blades 110 toa single user session/terminal window in the user client 10. Also,multiple operators can have multiple user sessions (corresponding tomultiple terminal sessions) opened on their respective user clients 10a-n. Annotations to terminal sessions are stored in the aggregationlayer 15 for each terminal session, and stored for each individualoperator inputting commands on the command line. The command line in aterminal session allows the operator to input a command via his or heruser client 10 a-n; then the operator (via the user session on the userclient 10) can observe and monitor: how the server 105 utilizes its(memory) address space to process the command, which particular blade1-N of blades 110 is assigned by the server 105 to process this command,and the running of the process on the assigned blade 110.

Three flow sequences in FIGS. 2, 3, and 4 are provided below forworkloads (and their corresponding processes) in a closed architectureor open architecture. Note that respective listeners 130, 131, and 132may steer data into closed or open modes by direction of the operator onthe user client 10 and/or the aggregation layer 15. Also, the server105, blades 110, switch 115, computer systems 120, and computer system125 each have the necessary software applications and hardware tooperate as discussed herein. The hardware may include processors,memory, storage mediums, display screens, keyboards, mouse, etc., andfurther functionality and features can be utilized from computer 700discussed below in FIG. 7, as understood by one skilled in the art.

Now turning to FIG. 2, a flow chart 200 illustrates monitoring,controlling, and/or interacting with workloads on the server 105 and/orindividual blades 110 according to an embodiment.

The aggregation layer 15 may intercept a request from the user client 10to open a terminal session on server 105 and/or blades 110 (whichcorresponds to user session/terminal window in the user client 10) tointeract with a USS and/or MVS session at block 205. For subsequentinteraction, the aggregation layer 15 acts as a proxy for the userclient 10.

The aggregation layer 15 provides the user client 10 with access to alist of all workloads running on the server 105 via the aggregationlayer 15 at block 210. The aggregation layer 15 is configured togenerate the list of all workloads in the memory address space of theserver 105. Via the terminal session(s), the operator can now haveaccess to the memory address spaces on the server 105, and the workloadsmay have corresponding processes running on the blades 1-N.

For each workload in the list, user client 10 may select via theaggregation layer 15 the following (a) blades 110 session breakout, (b)server 105 to blade 110 breakout, and/or (c) blades 110 to server 105breakout, and the one or more selections are received and executed bythe aggregation layer 15 at block 215.

As received by the aggregation layer 15, if the operator selects (a) theblades 110 session breakout on the user client 10, then the bladeterminal session is instantiated by the server 105 and/or theaggregation layer 15 on each blade 1-N of blades 110 where workloadprocesses run at block 220. In one implementation for blade sessionbreakout, the aggregation layer 15 provides for display in the userclient 10 (all) the processes running on the blades 1-N. Via theaggregation layer 15, the operator of user client 10 can then select anindividual blade 1-N for monitoring and control, and/or can choose tomonitor and control all blades 110. If no workload processes are runningon particular blades 1-N, then the server 105 and/or aggregation layer15 is configured not to instantiate a terminal session on theseparticular blades 1-N.

For each of the blade terminal sessions instantiated on the blades 110,corresponding user session windows (i.e., user sessions, terminalwindows, etc.) are created on the user client 10 by the aggregationlayer 15 and/or the user client 10 at block 225. As noted above, theuser sessions (terminal window) is a graphical user interface on thecomputer system 120 that corresponds to the terminal sessionsinstantiated on the server 105 and/or blades 110.

The aggregation layer 15 is configured to supply user input (e.g.,commands) to all blade terminal sessions (of blades 110) if requiredand/or can target a single named terminal session running on aparticular blade 110 (such as, e.g., blade 1) at block 230.

At block 235, output from each blade terminal session of the blades 1-Nis relayed back to (i.e., received by) the aggregation layer 15 (via thelink 102 and switch 115 and/or via the link 126 and server 105), and theaggregation layer 15 transmits the output to the user client 10 formonitoring and/or control by the operator at computer system 120. Also,the aggregation layer 15 may extract the output from the blades 110,e.g., via the listeners 130, 131, and/or 132, and provide the output tothe user client 10. For example, the output from any of the blades 110may consist of results (sent) back to the server 105 and/or requests tothe server 105. Formats of results and/or requests are known to theaggregation layer, and these may be communicated to the listeners 130,131, and/or 132 so that the listeners may parse data packetscorresponding to a given terminal session.

If the user client 10 selects (b) server 105 to blade 110 breakout, thenserver 105 to blade 110 communication data is extracted by aggregationlayer 15 from switch listener 130 (and/or listener 131) and displayed onuser client 10 at block 240. Also, the server 105 may gather server toblade communication data and send to the user client 10 via theaggregation layer 15. Server to blade communication data includes theindividual processing requests/assignments made to the individual blades1-N by the server 105, individual blade addresses identifying theindividual blades 1-N being assigned processing tasks/requests, andprotocol information. In one implementation, the aggregation layer 15may instantiate a terminal session on the server 105 to capture theserver to blade communication data, and the terminal session mayinteract with the listener 130 and/or 131. As noted above, theaggregation layer 15 can connect the terminal session(s) to acorresponding user session in the user client 10 for monitoring andcontrol.

If the user client 10 selects (c) blades 110 to server 105 breakout,then blade to server communication data is extracted from the switchlistener 130 (and/or listener 132) by the aggregation layer 15 anddisplayed on user client 10 at 245. The blade to server communicationdata may include output for completed processes executed on the blades110, responses to incomplete processes from the blades 110, and protocolinformation. In one implementation, the aggregation layer 15 mayinstantiate a terminal session on the blades 110 to capture the blade toserver communication data, and the terminal session may interact withthe listener 130 and/or 132. As noted above, the aggregation layer 15can connect the terminal session(s) to a corresponding user session inthe user client 10 for monitoring and control. Each blade 1-N may haveit own listener 132 (although not shown for the sake of brevity).

Further, the aggregation layer 15 provides terminal session persistenceon the server 105 and/or blades 110, using heartbeat messages from theaggregation layer 15 to the server 105 and/or blades 110. The operatormay close the user client 10 on one computer system 120 and then restartthe user client 10 on his or her other computer system 120; the usersession will still remain active on the other computer system 120 suchthat the operator can interact with the same terminal session(s) asbefore. The (a) blade session breakout, (b) server to blade breakout,and/or (c) blade to server breakout allow the user client 10 via theaggregation layer 15 to trace any commands back and forth between theserver 105 and any target blade 110. Additionally, any command enteredin the user session of the user client 10 can be (simultaneously)applied to a terminal session on the server 105 and/or to individualterminal sessions on the blades 110.

FIGS. 3A and 3B illustrate a flow chart 300 for terminal sessioncollaboration for aggregated user sessions according to an embodiment.There may be different user clients 10 a-10 n (i.e., differentoperators) desiring to collaborate on the workloads running on theserver 105 and/or the processes running on the blades 110.

The aggregation layer 15 is configured to provide session collaborationamong the different operators of user clients 10 a-10 n each monitoring,inputting commands, and receiving data from the same terminal session(s)on the server 105 and/or the blades 1-N of blades 110. As such, thedifferent user clients 10 can all interact with the same terminalsession(s), while appearing as a single user client 10 (e.g., having asingle session identification) to the server 105 and/or blades 1-N.Before continuing with FIGS. 3A and 3B, FIG. 5 illustrates furtherdetails of the aggregation layer 15, which includes a translator 505, adatabase 510 stored in memory, a master session 515, current commandline user name 520, and a table 525 according to an embodiment.

Continuing with FIGS. 3A and 3B, the aggregation layer 15 maintains themaster session 515 and the current command line user name 520 for one ormore terminal sessions at block 305. The master session 515 coordinatesthe session collaboration of the operators on user client 10.

The aggregation layer 15 is configured to receive user requests fromoperators of user clients 10 a-10 n who are interested in collaborationon one or more terminal sessions, and the aggregation layer 15 isconfigured to connect the respective user clients 10 a-10 n with themaster session 515 at block 310. The translator 505 of the aggregationlayer 15 is configured to aggregate numerous (1-1000) terminal sessions(including blade terminal sessions on respective blades 1-N and serverterminal session on the server 105) into a single terminal session thatis displayed for interaction in a terminal window/user session on eachuser client 10 a-10 n via the master session 515.

Also, each user client 10 a-10 n may have its own session identification(which can be a number, alphabets, and/or an alphanumericidentification) for identifying the user client 10 with the terminalsessions running on the server 105 and/or blades 110. Duringcollaboration, the translator 505 is configured to aggregate thenumerous user clients 10 a-10 n each having their respective sessionidentifications to appear as a single session identification to theserver 105 and/or the blades 110 for the terminal session.

For the terminal session(s), the master session 515 of the aggregationlayer 15 notifies each operator of the other operator participants(i.e., the other operators participating in the master session 515) viatheir respective user clients 10 a-10 n at block 315. Each terminalsession (on the server 105 and/or blades 1-N) has a command line inwhich the operator can input (via the user client 10) a command via theterminal session to execute on the respective server 105 and/or blade1-N.

The commands entered for the command line may be stored in a database(e.g., database 510 of FIG. 5) of the aggregation layer 15. Theaggregation layer 15 is configured to allow each operator to annotateprevious command lines at the same instance but not all (simultaneously)have authority to annotate the current command line. For example, allthe operators may work on the same terminal session (which is treated asa document) at the same time, which includes making annotations,comments, entering date and time stamps, etc. Also, the aggregationlayer 15 is configured to receive these annotations that are desired forthe current command line from several operators at the same time atblock 320.

Although the aggregation layer 15 can receive multiple annotations tothe current command line, the aggregation layer 15 is configured to(only) grant (by request) one operator (e.g., the user client 10 a)access to the current command line at a time for execution by the server105 and/or blades 110. The aggregation layer 15 may receive the requestfor authority over the command line to be assigned the current commandline user name at block 325. For example, the operator (which may be oneor more) seeking access to the current command line user name 520 makesa request via their user client 10 to the aggregation layer 15. Theaggregation layer 15 relays/transfers the request for the currentcommand line user name 520 to all other operators (user clients 10)connected to the master session 515 for collaboration on the terminalsession(s) at block 330. Assume that the operator of user client 10 amakes a request. The user client 10 a may be the only request and/or maybe one of many requests for the current command line user name 520.

The aggregation layer 15 receives responses sent back from all otheroperators of user client 10 at block 335. The aggregation layer 15determines whether there is agreement in the responses from eachoperator in the master session 515 at block 340. For example, the otheroperators on user clients 10 b-10 n can accept the request of therequesting operator on user client 10 a to be designated the currentcommand line user name 520. If yes, there is agreement from theoperators to give the requesting operator access to the current commandline user name 520, the aggregation layer 15 authorizes the requestingoperator access to the current command line user name 520 at block 345.The agreement could be based on majority of the user clients 10, basedon having 50% or more, based on having 75% or more, based on completeagreement of all user clients 10, etc. This operator (of user client 10a) now granted access to the current command line user name 520 isassigned authority to control (to the exclusion of the other operators)the current command line user name 520 by the aggregation layer 15.

The aggregation layer 15 takes the input from operator as the currentcommand line user name 520 and provides the input to the server 105and/or blades 110 for execution in the appropriate terminal session atblock 350. When the current command line user name 520 applies (e.g., isassigned by the aggregation layer 15) to multiple terminal sessions(e.g., terminal sessions 1-1000) running on the server 105 and/ormultiple blades 110, a single command entered for the current commandline user name 520 is executed/applied across each of the terminalsessions (e.g., terminal sessions 1-1000). All of the operatorparticipants utilizing their respective user client 10 a-10 n canmonitor and observe the behavior of the respective server 105 and/orblades 110 for their respective terminal sessions; the operators canalso annotate old command lines.

If no, there is not agreement from the operators to give the requestingoperator access to the current command line user name 520, theaggregation layer 15 denies the requesting operator (of user client 10a) access to the command line at block 355 and flow returns to block325.

FIG. 4 illustrates a flow chart 400 for session transfer of aggregatedterminal sessions by the aggregation layer 15 according to anembodiment. There may be different operators (of user clients 10 a-10 n)that have different user sessions (corresponding to different terminalsessions), and each operator can transfer his or her user session viathe aggregation layer 15 to another operator of the user client 10.Also, a single (operator of) user client 10 a can transfer his or heruser session to another user client 10 b.

For example, the aggregation layer 15 saves a state for a current usersession (being run on the user client 10) which includes saving (dataof) server terminal sessions of server 105 and saving (data of) bladeterminal sessions of the blades 110 for this current user session(corresponding to one or more terminal sessions) at block 405. The usersession on, e.g., user client 10 a corresponds to a terminal session(one or more) running on the server 105 and/or the blades 110. Forexample, the state for the current user session (i.e., corresponding toone or more server terminal sessions and/or corresponding to one or moreblade terminal sessions) on user client 10 a may be saved in the mastersession 515 by the aggregation layer 15. The state of the user sessionmay include the various commands entered, the workloads monitored on theserver 105, the processes monitored on the blades 110, which particularblades 1-N were monitored, how the server 105 and/or blades 110responded to various commands, etc. Also, the state of the user sessionmay identify that the operator of the current user session (e.g., onuser client 10 a) is the current command line user name 520, when thisis the case; the state also identifies when the operator is not thecurrent command line user name 520.

The aggregation layer 15 maintains the table 525 of current and futureoperators (users) and their respective user clients 10 a-10 n at block410. For example, in addition to the operator on user client 10 a, theremay be other operators on user clients 10 b-10 n for the same terminalsession (e.g., during session collaboration) and/or different terminalsessions on the server 105 and blades 110, and the table 525 maintainsthis information.

When the operator (e.g., on user client 10 a) (and/or another operator)accesses/opens a terminal window/user session in the user client 10 a,the aggregation layer 15 provides a list (from the table 525) oftransferred user sessions (terminal sessions) for display at block 415.For example, the transferred terminal sessions (which can be bladeterminal sessions running on blades 110 and/or server terminal sessionsrunning on the server 105) have been transferred to the user client 10 afrom the other operators of user clients 10 b-10 n by the aggregationlayer 15. The user clients 10 b-10 n may indicate to the aggregationlayer 15 that their respective terminal sessions should be transferredto the user client 10 a and/or the user client 10 a may make a requestto the aggregation layer 15 for the transfer. The operator on the userclient 10 a may access the aggregation layer 15 to receive the list oftransferred server 105 terminal sessions and transferred blade 110terminal sessions along with communication breakout windows at block420. The breakout windows may include the a) blade session breakout, b)server to blade breakout, and/or the blade to server breakout discussedabove.

Assume that there are many operators on user clients 10 b-10 n inputtingcommands and/or monitoring various blade terminal sessions running onthe blades 1-N and various server terminal sessions running on theserver 105. The terminal sessions (e.g., blade and server terminalsessions) for these operators on user clients 10 b-10 n would be listedand displayed to the user client 10 a when the operator accesses itsuser client 10 a for the transferred terminal sessions, and theseterminal sessions of user clients 10 b-10 n can be transferred to theuser client 10 via the aggregation layer 15.

The aggregation layer 15 allows the operator of the user client 10 a tointeract with any of the past and/or present (transferred) terminalsessions (on the server 105 and/or the blades 110) in the list of thetable 525 at block 425. For example, the aggregation layer 15 isconfigured to allow the user client 10 a to access, re-run, and/ormodify any past and present (transferred) terminal sessions of the otheruser clients 10 b-10 n. Also, the aggregation layer 15 is configured toallow the past and present terminal sessions to be passed from oneoperator of, e.g., user client 10 b to another operator of user client10 a. Therefore, along with monitoring, the control and current commandline user name 520 of user clients 10 b-10 n can be given (transferred)to the user client 10 a by the aggregation layer 15.

The aggregation layer 15 is configured to execute ownership transfer ofthe terminal sessions for online/real-time transfer of terminal sessionsand/or offline transfer of the terminal sessions. For an onlinetransfer, both the sender (of the ownership transfer) and receiver mustbe online and active users of the aggregation layer 15. For an offlinetransfer, the receiver may be offline but must be an active user of thesystem.

FIG. 6 illustrates a method 600 for terminal session collaboration in adistributed architecture in which the server 105 is operativelyconnected to the blades 110 according to an embodiment.

The aggregation layer 15 is configured to generate the master session515 for collaboration by user clients 10, in which the master session515 corresponds to one or more terminal sessions in the distributedarchitecture of the server 105 operatively connected to the blades 110at block 605.

The aggregation layer 15 is configured to aggregate the one or moreterminal sessions on the distributed architecture of the server 105and/or blades 110 in the master session 515 at block 610. Theaggregation layer 15 makes a determination that the user clients 10agree for one user client (such as user client 10 a) of the user clients10 a-10 n to be authorized as the current command line user name 520(for the master sessions 515), responsive to requests that are sent tothe user clients 10 at block 615.

The aggregation layer 15 is configured to grant the one user client(e.g., user client 10 a) authorization to the current command line username 520 in the master session 515 based on an agreement by the userclients 10 at block 620.

Further, one or more terminal sessions are running on the blades 110 asblade terminal sessions. The master session 515 of the aggregation layer15 is configured to permit the user clients 10 to directly interact withthe plurality of blades through a switch to at least one of: breakoutcommunication traffic from the plurality of blades to the server,breakout communication traffic from the server to the plurality ofblades, and breakout processes running on the plurality of blades.

The one or more terminal sessions are running on one blade 1 of theplurality of blades 110. In another case, the one or more terminalsessions are respectively running on the server 105 and blades 110.

The user clients 10 are remote to the distributed architecture, and theuser clients 10 are on remote computer systems 120.

Ownership of the current command line user name 520 is configured to bepassed from the one user client 10 to another user client 10 by theaggregation layer 15. Also, the master session 515 permits the userclients 10 to view workloads and command the workloads running on theserver 105, and the master session 515 permits the user clients 10 toview processes and command the processes running on individual blades1-N of the blades 110.

The aggregation layer 15 permits a user session of the one user client10 a to be transferred to another user client 10 b, and the aggregationlayer 15 provides a list (e.g., in table 525) of all transferred usersessions to the other user client 10 b. The aggregation layer 15 isconfigured to aggregate one or more terminal sessions running on theserver 105 and individual blades 1-N of the blades 110 to display into asingle user session on user client 10. As such, the commands input inthe current command line user name 520 apply to each of the one or moreterminal sessions on the distributed architecture; execution of thecommands by the server 105 and/or the individual blades 1-N, along withresults of the execution of the commands, are provided for display tothe user clients.

FIG. 7 illustrates an example of a computer 700 having capabilities,which may be included in exemplary embodiments. Various methods,procedures, modules, flow diagrams, tools, application, circuits,elements, and techniques discussed herein may also incorporate and/orutilize the capabilities of the computer 700. Moreover, capabilities ofthe computer 700 may be utilized to implement features of exemplaryembodiments discussed herein. One or more of the capabilities of thecomputer 700 may be utilized to implement, to connect to, and/or tosupport any element discussed herein (as understood by one skilled inthe art) in FIGS. 1-6.

Generally, in terms of hardware architecture, the computer 700 mayinclude one or more processors 710, computer readable storage memory720, and one or more input and/or output (I/O) devices 770 that arecommunicatively coupled via a local interface (not shown). The localinterface can be, for example but not limited to, one or more buses orother wired or wireless connections, as is known in the art. The localinterface may have additional elements, such as controllers, buffers(caches), drivers, repeaters, and receivers, to enable communications.Further, the local interface may include address, control, and/or dataconnections to enable appropriate communications among theaforementioned components.

The processor 710 is a hardware device for executing software that canbe stored in the memory 720. The processor 710 can be virtually anycustom made or commercially available processor, a central processingunit (CPU), a data signal processor (DSP), or an auxiliary processoramong several processors associated with the computer 700, and theprocessor 710 may be a semiconductor based microprocessor (in the formof a microchip) or a macroprocessor.

The computer readable memory 720 can include any one or combination ofvolatile memory elements (e.g., random access memory (RAM), such asdynamic random access memory (DRAM), static random access memory (SRAM),etc.) and nonvolatile memory elements (e.g., ROM, erasable programmableread only memory (EPROM), electronically erasable programmable read onlymemory (EEPROM), programmable read only memory (PROM), tape, compactdisc read only memory (CD-ROM), disk, diskette, cartridge, cassette orthe like, etc.). Moreover, the memory 720 may incorporate electronic,magnetic, optical, and/or other types of storage media. Note that thememory 720 can have a distributed architecture, where various componentsare situated remote from one another, but can be accessed by theprocessor 710.

The software in the computer readable memory 720 may include one or moreseparate programs, each of which comprises an ordered listing ofexecutable instructions for implementing logical functions. The softwarein the memory 720 includes a suitable operating system (O/S) 750,compiler 740, source code 730, and one or more applications 760 of theexemplary embodiments. As illustrated, the application 760 comprisesnumerous functional components for implementing the features, processes,methods, functions, and operations of the exemplary embodiments. Theapplication 760 of the computer 700 may represent numerous applications,agents, software components, modules, interfaces, controllers, etc., asdiscussed herein but the application 760 is not meant to be alimitation.

The operating system 750 may control the execution of other computerprograms, and provides scheduling, input-output control, file and datamanagement, memory management, and communication control and relatedservices.

The application(s) 760 may employ a service-oriented architecture, whichmay be a collection of services that communicate with each. Also, theservice-oriented architecture allows two or more services to coordinateand/or perform activities (e.g., on behalf of one another). Eachinteraction between services can be self-contained and loosely coupled,so that each interaction is independent of any other interaction.

Further, the application 760 may be a source program, executable program(object code), script, or any other entity comprising a set ofinstructions to be performed. When a source program, then the program isusually translated via a compiler (such as the compiler 740), assembler,interpreter, or the like, which may or may not be included within thememory 720, so as to operate properly in connection with the O/S 750.Furthermore, the application 760 can be written as (a) an objectoriented programming language, which has classes of data and methods, or(b) a procedure programming language, which has routines, subroutines,and/or functions.

The I/O devices 770 may include input devices (or peripherals) such as,for example but not limited to, a mouse, keyboard, scanner, microphone,camera, etc. Furthermore, the I/O devices 770 may also include outputdevices (or peripherals), for example but not limited to, a printer,display, etc. Finally, the I/O devices 770 may further include devicesthat communicate both inputs and outputs, for instance but not limitedto, a NIC or modulator/demodulator (for accessing remote devices, otherfiles, devices, systems, or a network), a radio frequency (RF) or othertransceiver, a telephonic interface, a bridge, a router, etc. The I/Odevices 770 also include components for communicating over variousnetworks, such as the Internet or an intranet. The I/O devices 770 maybe connected to and/or communicate with the processor 710 utilizingBluetooth connections and cables (via, e.g., Universal Serial Bus (USB)ports, serial ports, parallel ports, FireWire, HDMI (High-DefinitionMultimedia Interface), etc.).

When the computer 700 is in operation, the processor 710 is configuredto execute software stored within the memory 720, to communicate data toand from the memory 720, and to generally control operations of thecomputer 700 pursuant to the software. The application 760 and the O/S750 are read, in whole or in part, by the processor 710, perhapsbuffered within the processor 710, and then executed.

When the application 760 is implemented in software it should be notedthat the application 760 can be stored on virtually any computerreadable storage medium for use by or in connection with any computerrelated system or method. In the context of this document, a computerreadable storage medium may be an electronic, magnetic, optical, orother physical device or means that can contain or store a computerprogram for use by or in connection with a computer related system ormethod.

The application 760 can be embodied in any computer-readable medium 720for use by or in connection with an instruction execution system,apparatus, server, or device, such as a computer-based system,processor-containing system, or other system that can fetch theinstructions from the instruction execution system, apparatus, or deviceand execute the instructions. In the context of this document, a“computer-readable storage medium” can be any means that can store,read, write, communicate, or transport the program for use by or inconnection with the instruction execution system, apparatus, or device.The computer readable medium can be, for example but not limited to, anelectronic, magnetic, optical, or semiconductor system, apparatus, ordevice.

More specific examples (a nonexhaustive list) of the computer-readablemedium 720 would include the following: an electrical connection(electronic) having one or more wires, a portable computer diskette(magnetic or optical), a random access memory (RAM) (electronic), aread-only memory (ROM) (electronic), an erasable programmable read-onlymemory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber(optical), and a portable compact disc memory (CDROM, CD R/W) (optical).

In exemplary embodiments, where the application 760 is implemented inhardware, the application 760 can be implemented with any one or acombination of the following technologies, which are each well known inthe art: a discrete logic circuit(s) having logic gates for implementinglogic functions upon data signals, an application specific integratedcircuit (ASIC) having appropriate combinational logic gates, aprogrammable gate array(s) (PGA), a field programmable gate array(FPGA), etc.

It is understood that the computer 700 includes non-limiting examples ofsoftware and hardware components that may be included in variousdevices, servers, and systems discussed herein, and it is understoodthat additional software and hardware components may be included in thevarious devices and systems discussed in exemplary embodiments.

As described above, embodiments can be embodied in the form ofcomputer-implemented processes and apparatuses for practicing thoseprocesses. An embodiment may include a computer program product 800 asdepicted in FIG. 8 on a computer readable/usable medium 802 withcomputer program code logic 804 containing instructions embodied intangible media as an article of manufacture. Exemplary articles ofmanufacture for computer readable/usable medium 802 may include floppydiskettes, CD-ROMs, hard drives, universal serial bus (USB) flashdrives, or any other computer-readable storage medium, wherein, when thecomputer program code logic 804 is loaded into and executed by acomputer, the computer becomes an apparatus for practicing theinvention. Embodiments include computer program code logic 804, forexample, whether stored in a storage medium, loaded into and/or executedby a computer, or transmitted over some transmission medium, such asover electrical wiring or cabling, through fiber optics, or viaelectromagnetic radiation, wherein, when the computer program code logic804 is loaded into and executed by a computer, the computer becomes anapparatus for practicing the invention. When implemented on ageneral-purpose microprocessor, the computer program code logic 804segments configure the microprocessor to create specific logic circuits.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of onemore other features, integers, steps, operations, element components,and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

The flow diagrams depicted herein are just one example. There may bemany variations to this diagram or the steps (or operations) describedtherein without departing from the spirit of the invention. Forinstance, the steps may be performed in a differing order or steps maybe added, deleted or modified. All of these variations are considered apart of the claimed invention.

While the preferred embodiment to the invention had been described, itwill be understood that those skilled in the art, both now and in thefuture, may make various improvements and enhancements which fall withinthe scope of the claims which follow. These claims should be construedto maintain the proper protection for the invention first described.

What is claimed is:
 1. A computer program product for sessionaggregation in a distributed architecture comprising a serveroperatively connected to a plurality of blades, the computer programproduct comprising: a tangible storage medium readable by a processingcircuit and storing instructions for execution by the processing circuitfor performing a method comprising: generating, by the processingcircuit, a master session for collaboration by user clients, the mastersession corresponds to one or more terminal sessions on the distributedarchitecture of the server operatively connected to the plurality ofblades; wherein the one or more terminal sessions run on the server andthe plurality of blades in order to permit the user clients to inputcommands, view workloads, and view processes running on the server andthe plurality of blades; aggregating the one or more terminal sessionson the distributed architecture into a single terminal session in themaster session; making a determination that the user clients agree forone user client of the user clients to be authorized as a currentcommand line user name in the master session because all of the userclients cannot simultaneously access the current command line user nameat one time, responsive to requests that are sent to the user clients;and granting the one user client authorization to access the currentcommand line user name in the master session based on an agreement bythe user clients; wherein the user clients respectively have individualsession identifications; wherein the master session is configured toaggregate all of the individual session identifications into a singlesession identification as a single user client instead of multiple userclients; wherein the master session allows all of the user clients tocollectively interact with the one or more terminal sessions as thesingle client in order to collectively monitor and observe the serverand the plurality of blades; wherein the single terminal session isconfigured to allow the one user client, having previously been grantedauthorization based on the agreement by the user clients, to issue asingle command in the current command line user name in the mastersession, such that the single command is applied across each of the oneor more terminal sessions that are executing on the server and theplurality of blades while the user clients monitor and observe behaviorof the server and the plurality of blades executing of the singlecommand.
 2. The computer program product of claim 1, wherein the one ormore terminal sessions are running on the plurality of blades as bladeterminal sessions; wherein the master session is configured to permitthe user clients to directly interact with the plurality of bladesthrough a switch that bypasses the server to at least one of: breakoutcommunication traffic from the plurality of blades to the server;breakout communication traffic from the server to the plurality ofblades; and breakout processes running on the plurality of blades;wherein the plurality of blades are separate from the server; whereinthe server is configured to offload the processes to the plurality ofblades; wherein the switch is between the server and the plurality ofblades, such that the user clients in the master session are allowed tomonitor and observe via the switch.
 3. The computer program product ofclaim 1, wherein the one or more terminal sessions are running on oneblade of the plurality of blades.
 4. The computer program product ofclaim 1, wherein the one or more terminal sessions are respectivelyrunning on the server and the plurality of blades.
 5. The computerprogram product of claim 1, wherein the user clients are remote to thedistributed architecture, the user clients being on remote computersystems.
 6. The computer program product of claim 1, wherein ownershipof the current command line user name is configured to be passed fromthe one user client to another user client.
 7. The computer programproduct of claim 1, wherein the master session permits the user clientsto view workloads and command the workloads running on the server; andwherein the master session permits the user clients to view processesand command the processes running on individual blades of the pluralityof blades.
 8. The computer program product of claim 1, furthercomprising permitting a user session of the one user client to betransferred to another user client; and providing a list of alltransferred user sessions to the another user client.
 9. The computerprogram product of claim 1, further comprising aggregating the one ormore terminal sessions running on the server and individual blades ofthe plurality of blades to display in a single user session; whereincommands in the current command line user name apply to each of the oneor more terminal sessions on the distributed architecture; and whereinexecution of the commands by the server and by the individual blades andresults of the execution of the commands are provided for display to theuser clients.
 10. A method for session aggregation in a distributedarchitecture comprising a server operatively connected to a plurality ofblades, the method comprising: generating, by a processing circuit, amaster session for collaboration by user clients, the master sessioncorresponds to one or more terminal sessions on the distributedarchitecture of the server operatively connected to the plurality ofblades; wherein the one or more terminal sessions run on the server andthe plurality of blades in order to permit the user clients to inputcommands, view workloads, and view processes running on the server andthe plurality of blades; aggregating the one or more terminal sessionson the distributed architecture into a single terminal session in themaster session; making a determination that the user clients agree forone user client of the user clients to be authorized as a currentcommand line user name in the master session because all of the userclients cannot simultaneously access the current command line user nameat one time, responsive to requests that are sent to the user clients;and granting the one user client authorization to access the currentcommand line user name in the master session based on an agreement bythe user clients; wherein the user clients respectively have individualsession identifications; wherein the master session is configured toaggregate all of the individual session identifications into a singlesession identification as a single user client instead of multiple userclients; wherein the master session allows all of the user clients tocollectively interact with the one or more terminal sessions as thesingle client in order to collectively monitor and observe the serverand the plurality of blades; wherein the single terminal session isconfigured to allow the one user client, having previously been grantedauthorization based on the agreement by the user clients, to issue asingle command in the current command line user name in the mastersession, such that the single command is applied across each of the oneor more terminal sessions that are executing on the server and theplurality of blades while the user clients monitor and observe behaviorof the server and the plurality of blades executing of the singlecommand.
 11. The method of claim 10, wherein the one or more terminalsessions are running on the plurality of blades as blade terminalsessions; wherein the master session is configured to permit the userclients to directly interact with the plurality of blades through aswitch to at least one of: breakout communication traffic from theplurality of blades to the server; breakout communication traffic fromthe server to the plurality of blades; and breakout processes running onthe plurality of blades.
 12. The method of claim 10, wherein the one ormore terminal sessions are running on one blade of the plurality ofblades.
 13. The method of claim 10, wherein the one or more terminalsessions are respectively running on the server and the plurality ofblades.
 14. The method of claim 10, wherein the user clients are remoteto the distributed architecture, the user clients being on remotecomputer systems.
 15. The method of claim 10, wherein ownership of thecurrent command line user name is configured to be passed from the oneuser client to another user client.
 16. The method of claim 10, whereinthe master session permits the user clients to view workloads andcommand the workloads running on the server; and wherein the mastersession permits the user clients to view processes and command theprocesses running on individual blades of the plurality of blades.